package dryven.codegen.asm;

import java.lang.reflect.Method;

import dryven.codegen.asm.typeinfo.TypeInfo;

public interface Invokable extends TypeInformable {
	public TempValue invoke(Method method, ReadableSymbol ... params);
	public TempValue invoke(String method, TypeInfo returnType, ReadableSymbol ... params);
	public TempValue invoke(String method, Class<?> returnType, ReadableSymbol ... params);
	public TempValue invoke(String method, TypeInfo returnType, TempValuePreparer tvp);
	public TempValue invoke(String method, Class<?> returnType, TempValuePreparer tvp);
	public TempValue invoke(Method method, TempValuePreparer tvp);
	public FieldInstance getFieldInstance(FieldDefinition fd);
}
